Data preparation

load("XSTSF_production.RData")
f0_mono_pre <- f0_mono_pre %>% 
  mutate(citation_tone_sync = substr(citation_tone, 1, 2),
         ind_no = paste0(speaker, '_', citation_no)) %>% 
  # normalisation
  group_by(speaker) %>%
  mutate(norm_f0 = scale(log(f0))) %>% 
  ungroup()
kable(f0_mono_pre[1:200,]) %>%
  kable_styling("striped", full_width = F) %>%
  scroll_box(width = '800px', height = "250px")
speaker citation_no time f0 token citation_tone citation_tone_sync ind_no norm_f0
S1 1 1 244.5355 HHp HH S1_1 -1.230805122
S1 1 2 265.5099 HHp HH S1_1 -0.623044344
S1 1 3 262.8037 HHp HH S1_1 -0.698706015
S1 1 4 267.3166 HHp HH S1_1 -0.572958412
S1 1 5 274.9259 HHp HH S1_1 -0.365664839
S1 1 6 278.1372 HHp HH S1_1 -0.279898982
S1 1 7 277.2501 HHp HH S1_1 -0.303490378
S1 1 8 276.2189 HHp HH S1_1 -0.331011101
S1 1 9 276.3570 HHp HH S1_1 -0.327320905
S1 1 10 276.4264 HHp HH S1_1 -0.325464757
S1 3 1 254.0659 HHp HH S1_3 -0.948434523
S1 3 2 246.6589 HHp HH S1_3 -1.166952628
S1 3 3 254.1301 HHp HH S1_3 -0.946570304
S1 3 4 265.6612 HHp HH S1_3 -0.618836683
S1 3 5 278.0189 HHp HH S1_3 -0.283040004
S1 3 6 289.1111 HHp HH S1_3 0.005894237
S1 3 7 296.0174 HHp HH S1_3 0.180244179
S1 3 8 299.3299 HHp HH S1_3 0.262430821
S1 3 9 299.0619 HHp HH S1_3 0.255814578
S1 3 10 295.3790 HHp HH S1_3 0.164298324
S1 5 1 287.6011 HHp HH S1_5 -0.032779365
S1 5 2 279.6140 HHp HH S1_5 -0.240787055
S1 5 3 289.4503 HHp HH S1_5 0.014554257
S1 5 4 295.1713 HHp HH S1_5 0.159104081
S1 5 5 293.6183 HHp HH S1_5 0.120144690
S1 5 6 290.7363 HHp HH S1_5 0.047294149
S1 5 7 290.0435 HHp HH S1_5 0.029674307
S1 5 8 290.4950 HHp HH S1_5 0.041163200
S1 5 9 292.5095 HHp HH S1_5 0.092201750
S1 5 10 285.1681 HHp HH S1_5 -0.095525967
S1 7 1 271.1185 HHs HH S1_7 -0.468660035
S1 7 2 287.2155 HHs HH S1_7 -0.042690068
S1 7 3 302.9914 HHs HH S1_7 0.352223653
S1 7 4 314.3481 HHs HH S1_7 0.623981713
S1 7 5 321.2062 HHs HH S1_7 0.783379283
S1 7 6 324.0588 HHs HH S1_7 0.848678631
S1 7 7 323.6683 HHs HH S1_7 0.839772256
S1 7 8 319.9600 HHs HH S1_7 0.754667911
S1 7 9 311.5997 HHs HH S1_7 0.559126558
S1 7 10 296.3532 HHs HH S1_7 0.188618025
S1 9 1 281.0815 HHp HH S1_9 -0.202127105
S1 9 2 267.8389 HHp HH S1_9 -0.558542942
S1 9 3 275.0358 HHp HH S1_9 -0.362712863
S1 9 4 287.0520 HHp HH S1_9 -0.046894151
S1 9 5 293.1499 HHp HH S1_9 0.108351595
S1 9 6 293.6366 HHp HH S1_9 0.120604831
S1 9 7 292.3401 HHp HH S1_9 0.087923968
S1 9 8 291.1803 HHp HH S1_9 0.058565186
S1 9 9 290.7635 HHp HH S1_9 0.047986210
S1 9 10 283.6640 HHp HH S1_9 -0.134581226
S1 11 1 271.1616 HHs HH S1_11 -0.467484461
S1 11 2 278.9779 HHs HH S1_11 -0.257608986
S1 11 3 293.5877 HHs HH S1_11 0.119373141
S1 11 4 306.4353 HHs HH S1_11 0.435694369
S1 11 5 316.3603 HHs HH S1_11 0.671106831
S1 11 6 322.3060 HHs HH S1_11 0.808622637
S1 11 7 327.2754 HHs HH S1_11 0.921624447
S1 11 8 327.5372 HHs HH S1_11 0.927530103
S1 11 9 319.8704 HHs HH S1_11 0.752600195
S1 11 10 299.9994 HHs HH S1_11 0.278929783
S1 13 1 268.2387 HHp HH S1_13 -0.547527218
S1 13 2 281.0335 HHp HH S1_13 -0.203388547
S1 13 3 294.3656 HHp HH S1_13 0.138918363
S1 13 4 303.1603 HHp HH S1_13 0.356338639
S1 13 5 309.5507 HHp HH S1_13 0.510400473
S1 13 6 312.4849 HHp HH S1_13 0.580078668
S1 13 7 311.6507 HHp HH S1_13 0.560334185
S1 13 8 309.3480 HHp HH S1_13 0.505564591
S1 13 9 306.0085 HHp HH S1_13 0.425401770
S1 13 10 291.5438 HHp HH S1_13 0.067778117
S1 15 1 265.5595 HHp HH S1_15 -0.621665143
S1 15 2 275.3815 HHp HH S1_15 -0.353435447
S1 15 3 295.0454 HHp HH S1_15 0.155953520
S1 15 4 310.9354 HHp HH S1_15 0.543364480
S1 15 5 325.5956 HHp HH S1_15 0.883619774
S1 15 6 334.4504 HHp HH S1_15 1.081789756
S1 15 7 338.1307 HHp HH S1_15 1.162616410
S1 15 8 339.9204 HHp HH S1_15 1.201602948
S1 15 9 330.6185 HHp HH S1_15 0.996683732
S1 15 10 307.2528 HHp HH S1_15 0.455373029
S1 17 1 277.0011 HHp HH S1_17 -0.310125704
S1 17 2 283.1580 HHp HH S1_17 -0.147768201
S1 17 3 302.7466 HHp HH S1_17 0.346254592
S1 17 4 315.6392 HHp HH S1_17 0.654254011
S1 17 5 326.2853 HHp HH S1_17 0.899248174
S1 17 6 333.4016 HHp HH S1_17 1.058594061
S1 17 7 333.5355 HHp HH S1_17 1.061558244
S1 17 8 328.1010 HHp HH S1_17 0.940232270
S1 17 9 323.1418 HHp HH S1_17 0.827749143
S1 17 10 305.4540 HHp HH S1_17 0.412005792
S1 19 1 265.9029 HHp HH S1_19 -0.612121412
S1 19 2 274.9813 HHp HH S1_19 -0.364176349
S1 19 3 295.3610 HHp HH S1_19 0.163849336
S1 19 4 310.9778 HHp HH S1_19 0.544372631
S1 19 5 320.7755 HHp HH S1_19 0.773469513
S1 19 6 325.1745 HHp HH S1_19 0.874061293
S1 19 7 323.3176 HHp HH S1_19 0.831767204
S1 19 8 317.3004 HHp HH S1_19 0.693020953
S1 19 9 311.1757 HHp HH S1_19 0.549071224
S1 19 10 299.6288 HHp HH S1_19 0.269801266
S1 21 1 254.0509 HHs HH S1_21 -0.948872128
S1 21 2 264.5050 HHs HH S1_21 -0.651048571
S1 21 3 287.7159 HHs HH S1_21 -0.029833025
S1 21 4 305.2054 HHs HH S1_21 0.405992670
S1 21 5 317.6704 HHs HH S1_21 0.701629111
S1 21 6 325.6137 HHs HH S1_21 0.884029894
S1 21 7 330.1072 HHs HH S1_21 0.985253760
S1 21 8 329.5035 HHs HH S1_21 0.971735205
S1 21 9 324.4411 HHs HH S1_21 0.857386029
S1 21 10 306.6209 HHs HH S1_21 0.440167619
S1 23 1 299.0016 HLq HL S1_23 0.254324561
S1 23 2 334.0672 HLq HL S1_23 1.073322392
S1 23 3 349.4912 HLq HL S1_23 1.406675168
S1 23 4 350.7617 HLq HL S1_23 1.433475541
S1 23 5 350.6263 HLq HL S1_23 1.430623916
S1 23 6 346.5725 HLq HL S1_23 1.344737205
S1 23 7 335.7906 HLq HL S1_23 1.111324915
S1 23 8 319.1788 HLq HL S1_23 0.736614274
S1 23 9 298.3476 HLq HL S1_23 0.238152571
S1 23 10 277.7784 HLq HL S1_23 -0.289432465
S1 25 1 307.8745 HLq HL S1_25 0.470299602
S1 25 2 323.3637 HLq HL S1_25 0.832819768
S1 25 3 331.8331 HLq HL S1_25 1.023766024
S1 25 4 341.1990 HLq HL S1_25 1.229332597
S1 25 5 344.9423 HLq HL S1_25 1.309916104
S1 25 6 342.3283 HLq HL S1_25 1.253735998
S1 25 7 333.2632 HLq HL S1_25 1.055527904
S1 25 8 316.3533 HLq HL S1_25 0.670944993
S1 25 9 298.2870 HLq HL S1_25 0.236653632
S1 25 10 288.9571 HLq HL S1_25 0.001959835
S1 24 1 281.4118 HHs HH S1_24 -0.193452854
S1 24 2 286.1060 HHs HH S1_24 -0.071275148
S1 24 3 300.8087 HHs HH S1_24 0.298828254
S1 24 4 311.8729 HHs HH S1_24 0.565598221
S1 24 5 318.5808 HHs HH S1_24 0.722763622
S1 24 6 323.8336 HHs HH S1_24 0.843544263
S1 24 7 325.9339 HHs HH S1_24 0.891289544
S1 24 8 325.2983 HHs HH S1_24 0.876873695
S1 24 9 319.4159 HHs HH S1_24 0.742099821
S1 24 10 301.9351 HHs HH S1_24 0.326430436
S1 26 1 248.0613 RFp RF S1_26 -1.125079001
S1 26 2 229.9690 RFp RF S1_26 -1.684389826
S1 26 3 260.0222 RFp RF S1_26 -0.777290552
S1 26 4 291.0476 RFp RF S1_26 0.055197077
S1 26 5 318.9533 RFp RF S1_26 0.731394055
S1 26 6 338.3428 RFp RF S1_26 1.167248118
S1 26 7 342.0703 RFp RF S1_26 1.248166343
S1 26 8 332.1762 RFp RF S1_26 1.031399647
S1 26 9 307.1932 RFp RF S1_26 0.453939620
S1 26 10 271.3206 RFp RF S1_26 -0.463155654
S1 28 1 260.4315 RFp RF S1_28 -0.765673540
S1 28 2 283.8817 RFp RF S1_28 -0.128916865
S1 28 3 310.7712 RFp RF S1_28 0.539464179
S1 28 4 334.2644 RFp RF S1_28 1.077682446
S1 28 5 350.1192 RFp RF S1_28 1.419934078
S1 28 6 350.8767 RFp RF S1_28 1.435895004
S1 28 7 339.2072 RFp RF S1_28 1.186092481
S1 28 8 321.2584 RFp RF S1_28 0.784578577
S1 28 9 295.4549 RFp RF S1_28 0.166197920
S1 28 10 270.4629 RFp RF S1_28 -0.486540325
S1 27 1 271.9794 HHs HH S1_27 -0.445243669
S1 27 2 292.9754 HHs HH S1_27 0.103955307
S1 27 3 313.3579 HHs HH S1_27 0.600681337
S1 27 4 324.7230 HHs HH S1_27 0.863800872
S1 27 5 333.9893 HHs HH S1_27 1.071601192
S1 27 6 340.7481 HHs HH S1_27 1.219565562
S1 27 7 343.6093 HHs HH S1_27 1.281321195
S1 27 8 342.9812 HHs HH S1_27 1.267807468
S1 27 9 337.1363 HHs HH S1_27 1.140864079
S1 27 10 318.4932 HHs HH S1_27 0.720734557
S1 30 1 225.3634 RFp RF S1_30 -1.833800311
S1 30 2 199.4391 RFp RF S1_30 -2.736343044
S1 30 3 228.6651 RFp RF S1_30 -1.726386324
S1 30 4 262.2391 RFp RF S1_30 -0.714588700
S1 30 5 284.0372 RFp RF S1_30 -0.124872173
S1 30 6 285.8136 RFp RF S1_30 -0.078826447
S1 30 7 280.0584 RFp RF S1_30 -0.229058408
S1 30 8 277.5319 RFp RF S1_30 -0.295987734
S1 30 9 276.0606 RFp RF S1_30 -0.335246281
S1 30 10 278.1836 RFp RF S1_30 -0.278665963
S1 32 1 264.3931 RFp RF S1_32 -0.654175270
S1 32 2 295.0272 RFp RF S1_32 0.155498705
S1 32 3 327.1467 RFp RF S1_32 0.918718797
S1 32 4 340.3917 RFp RF S1_32 1.211836065
S1 32 5 331.2249 RFp RF S1_32 1.010216850
S1 32 6 311.1429 RFp RF S1_32 0.548290514
S1 32 7 300.1738 RFp RF S1_32 0.283221394
S1 32 8 302.1749 RFp RF S1_32 0.332294025
S1 32 9 307.2229 RFp RF S1_32 0.454652178
S1 32 10 296.0051 RFp RF S1_32 0.179936334
S1 2 1 237.6748 RFq RF S1_2 -1.440974895
S1 2 2 257.8014 RFq RF S1_2 -0.840639329
S1 2 3 297.9747 RFq RF S1_2 0.228916202
S1 2 4 320.3587 RFq RF S1_2 0.763865604
S1 2 5 324.5692 RFq RF S1_2 0.860302332
S1 2 6 320.7375 RFq RF S1_2 0.772593346
S1 2 7 313.0966 RFq RF S1_2 0.594520629
S1 2 8 304.5275 RFq RF S1_2 0.389570360
S1 2 9 298.9819 RFq RF S1_2 0.253839374
S1 2 10 298.8253 RFq RF S1_2 0.249968640



Data visualisation

A function to plot f0 contours

p_cluster <- function(df_cluster, x, y = NULL,  avg_line_width = 2.5){
  p_cluster <- df_cluster %>% 
    ggplot(aes(x = time, y = norm_f0, group = ind_no, color = {{x}}, 
               text = paste('speaker: ', speaker, 
                            '\ntoken_no: ', citation_no, 
                            '\ntoken: ', token, 
                            '\ntime: ', time, 
                            '\nnorm_f0: ', norm_f0))) +
    geom_line(alpha = 0.2) +
    scale_color_ptol() +
    stat_summary(fun = mean, geom = "line", lwd = avg_line_width, aes(group = {{x}}), lty = 1) +
    xlab("Normalised time") +
    ylab("z-scores of log-f0") + 
    labs(color = "tone") +
    scale_color_manual(values = c("#4477AA", "#CC6677", "#DDCC77", "#117733"))+
    theme_minimal() +
    theme(legend.position = "top",
          text = element_text(family = 'Times New Roman', size = 20),
          axis.title.x = element_text(margin = margin(t = 10)),
          axis.title.y = element_text(margin = margin(r = 20)))
  
  if (!is.null(y)) {
    p_cluster <- p_cluster + facet_wrap(as.formula(paste("~", y)), ncol = 4, labeller = label_both)
  }
  
  return(p_cluster)
}


Average contours

The plot below shows the f0 contours of the 4 non-checked tones (HH, HL, LH, RF) across all the 8 speakers. The solid lines are average contours, and the faint lines are individual contours for each token.

p_cluster(f0_mono_pre, citation_tone_sync,avg_line_width = 4)

The plot below shows the numbers of tokens collected for each tone.

f0_mono_count_all <- f0_mono_pre %>% 
  group_by(citation_tone_sync) %>% 
  count() %>% 
  mutate(n = n/10) 
f0_mono_count_all
## # A tibble: 4 × 2
## # Groups:   citation_tone_sync [4]
##   citation_tone_sync     n
##   <chr>              <dbl>
## 1 HH                   182
## 2 HL                    58
## 3 LH                    39
## 4 RF                   153
f0_mono_pre %>% 
  group_by(citation_tone_sync, speaker) %>% 
  count() %>% 
  mutate(n = n/10) %>% 
  ggplot(aes(x = citation_tone_sync, y = n, fill = speaker))+
  geom_bar(stat="identity", position=position_dodge())+
  geom_text(aes(label=n), vjust=1.6, color="black",
            position = position_dodge(0.9), size=3.5)+
  scale_fill_brewer(palette="Paired")


Individual speakers

The plot below shows the f0 contours of the tones for each speaker. This plot is interactive, so you can:

  1. move your cursor to the contours to get more specific information (speaker, token, time, norm_f0, etc.);
  2. double click the tone category in the legend on the right to visualise this category only.

There are some observations:

  1. S6 has a quite ‘level’ HL, due to the creakiness he usually produced at the end of the contour for the HL tone. We could exclude his HL tone contours from the dataset.
  2. S6’s RF tone: same as above.
  3. S7’s HL tone is not measured accurately using the Praat Script ProsodyPro.
  4. S8 almost produced every tone with a falling end, so his tones seem to be merging.
ggplotly(p_cluster(f0_mono_pre, citation_tone_sync, 'speaker',  avg_line_width = 1.5), 
         tooltip = c('text', 'x'))